package com.rzcode.coinex.kernel.dao.entity;

import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.annotation.TableName;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.rzcode.coinex.kernel.common.enums.CertBizStateEnum;
import io.swagger.annotations.ApiModelProperty;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;

import java.math.BigDecimal;
import java.time.LocalDateTime;

/**
 * 商家认证申请实体类，用于保存商家认证申请的相关信息。
 *
 * @date 2019/5/5
 */
@Data
@Builder
@AllArgsConstructor
@NoArgsConstructor
@TableName(value = "business_auth_apply")
public class BusinessAuthApply {

    /**
     * 主键ID，自动递增。
     */
    @ApiModelProperty(value = "主键ID", example = "1")
    private Long id;

    /**
     * 关联的会员信息。
     */
    @ApiModelProperty(value = "会员信息", required = true)
    private Member member;

    /**
     * 认证商家状态。
     */
    @ApiModelProperty(value = "认证商家状态", example = "PENDING")
    private CertBizStateEnum certifiedBusinessStatus;

    /**
     * 认证失败的原因。
     */
    @ApiModelProperty(value = "认证失败原因", example = "资料不全")
    private String detail;

    /**
     * 申请时间。
     */
    @JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm:ss")
    @ApiModelProperty(value = "申请时间", example = "2023-01-01 12:00:00")
    private LocalDateTime createTime;

    /**
     * 审核时间。
     */
    @ApiModelProperty(value = "审核时间", example = "2023-01-02 10:00:00")
    private LocalDateTime auditingTime;

    /**
     * 认证信息详情，可能包括文件路径或其他文本信息。
     */
    @ApiModelProperty(value = "认证信息详情", example = "包含认证所需的各类文件路径")
    private String authInfo;

    /**
     * 关联的商家保证金信息。
     */
    @ApiModelProperty(value = "商家保证金信息", required = true)
    private BusinessAuthDeposit businessAuthDeposit;

    /**
     * 保证金记录ID。
     */
    @ApiModelProperty(value = "保证金记录ID", example = "BID123456")
    private String depositRecordId;

    /**
     * 保证金数额。
     */
    @ApiModelProperty(value = "保证金数额", example = "10000.00")
    private BigDecimal amount;

    /**
     * 最后更新时间。
     */
    @JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm:ss")
    @ApiModelProperty(value = "最后更新时间", example = "2023-01-02 14:30:00")
    private LocalDateTime updateTime;

    /**
     * 额外的JSON格式信息，非持久化字段。
     */
    @ApiModelProperty(value = "额外信息", hidden = true)
    private JSONObject info;
}

